﻿using commonFramwork.Enum;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace commonFramwork.Attribute
{
    [AttributeUsage(AttributeTargets.Method)]
    public class CacheAttribute : System.Attribute
    {
        /// <summary>
        /// 缓存方法
        /// </summary>
        public CacheMethod MethodType { get; set; }

        #region 构造方法，可选的  

        public CacheAttribute() { }
        public CacheAttribute(CacheMethod method)
        {
            this.MethodType = method;
        }


        /// <summary>
        /// 初始化一个新的<c>CachingAttribute</c>类型。
        /// </summary>
        /// <param name="method">缓存方式。</param>
        /// <param name="correspondingMethodNames">与当前缓存方式相关的方法名称。注：此参数仅在缓存方式为Remove时起作用。</param>
        public CacheAttribute(CacheMethod method, params string[] correspondingMethodNames)
            : this(method)
        {
            this.CorrespondingMethodNames = correspondingMethodNames;
        }


        /// <summary>
        /// 获取或设置一个<see cref="Boolean"/>值，该值表示当缓存方式为Put时，是否强制将值写入缓存中。
        /// </summary>
        public bool Force { get; set; }
        /// <summary>
        /// 获取或设置与当前缓存方式相关的方法名称。注：此参数仅在缓存方式为Remove时起作用。
        /// </summary>
        public string[] CorrespondingMethodNames { get; set; }
        #endregion

    }
}
